fps_meter: Add verbose mode to print detailed frame time Sample output: $ fps_meter.py -v trace method: workq [ 1 1 1 ] FPS: 3 23.292, 23.346, 23.393 BUG=chromium:805780 TEST=manually run verbose mode Change-Id: I334bc597af6a0b655dd82460bc2b7667e077f6a3 Reviewed-on: https://chromium-review.googlesource.com/913629 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Vovo Yang <vovoy@chromium.org> Reviewed-by: Cheng-Yu Lee <cylee@google.com> Reviewed-by: Yury Khmel <khmel@google.com> 
diff --git a/fps_meter/fps_meter.py b/fps_meter/fps_meter.py index c7ca29a..1e754f8 100755 --- a/fps_meter/fps_meter.py +++ b/fps_meter/fps_meter.py 
@@ -24,6 +24,7 @@  ^  1 : Frame update count detected in this 1/60 sec interval.  """ +import argparse  import atexit  import collections  import os @@ -154,17 +155,18 @@  notify_thread.start()     -def process_trace_buffer(trace_buffer, end_time): +def process_trace_buffer(trace_buffer, end_time, verbose=False):  # Checks all vblanks in the range [end_time - 1.0, end_time].  frame_info = []  step = 1.0 / REFRESH_RATE  step_time = end_time - 1.0 + step  fps_count = 0 + frame_times = []  for _ in range(REFRESH_RATE):  # Checks if there are vblanks in a refresh interval.  step_count = 0  while trace_buffer and trace_buffer[0] < step_time: - trace_buffer.popleft() + frame_times.append(trace_buffer.popleft())  step_count += 1    # Each character represent an 1 / REFRESH_RATE interval. @@ -180,9 +182,11 @@    frame_info_str = ''.join(frame_info)  print '[%s] FPS: %2d' % (frame_info_str, fps_count) + if frame_times and verbose: + print ', '.join(['%.3f' % t for t in frame_times])     -def main_loop(trace_method): +def main_loop(trace_method, verbose=False):  """Main loop to parse the trace.    There are 2 threads involved: @@ -226,12 +230,18 @@  m_notify = re_notify.match(line)  if m_notify:  timestamp = float(m_notify.group(1)) - process_trace_buffer(trace_buffer, timestamp) + process_trace_buffer(trace_buffer, timestamp, verbose)      if __name__ == '__main__': + # parsing arguments + parser = argparse.ArgumentParser(description='Print fps infomation.') + parser.add_argument('-v', dest='verbose', action='store_true', + help='print verbose frame time info') + args = parser.parse_args() +  trace_method = get_trace_method()  print 'trace method:', trace_method  enable_tracing(trace_method) - main_loop(trace_method) + main_loop(trace_method, args.verbose)